home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 98 / Skunkware 98.iso / src / interp / perl5.005.tar.gz / perl5.005.tar / perl5.005 / pod / perl.pod < prev    next >
Text File  |  1998-07-22  |  12KB  |  320 lines

  1. =head1 NAME
  2.  
  3. perl - Practical Extraction and Report Language
  4.  
  5. =head1 SYNOPSIS
  6.  
  7. B<perl>    S<[ B<-sTuU> ]>
  8.     S<[ B<-hv> ] [ B<-V>[:I<configvar>] ]>
  9.     S<[ B<-cw> ] [ B<-d>[:I<debugger>] ] [ B<-D>[I<number/list>] ]>
  10.     S<[ B<-pna> ] [ B<-F>I<pattern> ] [ B<-l>[I<octal>] ] [ B<-0>[I<octal>] ]>
  11.     S<[ B<-I>I<dir> ] [ B<-m>[B<->]I<module> ] [ B<-M>[B<->]I<'module...'> ]>
  12.     S<[ B<-P> ]>
  13.     S<[ B<-S> ]>
  14.     S<[ B<-x>[I<dir>] ]>
  15.     S<[ B<-i>[I<extension>] ]>
  16.     S<[ B<-e> I<'command'> ] [ B<--> ] [ I<programfile> ] [ I<argument> ]...>
  17.  
  18. For ease of access, the Perl manual has been split up into a number
  19. of sections:
  20.  
  21.     perl        Perl overview (this section)
  22.     perldelta        Perl changes since previous version
  23.     perlfaq        Perl frequently asked questions
  24.     perltoc        Perl documentation table of contents
  25.  
  26.     perldata        Perl data structures
  27.     perlsyn        Perl syntax
  28.     perlop        Perl operators and precedence
  29.     perlre        Perl regular expressions
  30.     perlrun        Perl execution and options
  31.     perlfunc        Perl builtin functions
  32.     perlvar        Perl predefined variables
  33.     perlsub        Perl subroutines
  34.     perlmod        Perl modules: how they work
  35.     perlmodlib        Perl modules: how to write and use
  36.     perlmodinstall    Perl modules: how to install from CPAN
  37.     perlform        Perl formats
  38.     perllocale        Perl locale support
  39.  
  40.     perlref        Perl references
  41.     perldsc        Perl data structures intro
  42.     perllol        Perl data structures: lists of lists
  43.     perltoot        Perl OO tutorial
  44.     perlobj        Perl objects
  45.     perltie        Perl objects hidden behind simple variables
  46.     perlbot        Perl OO tricks and examples
  47.     perlipc        Perl interprocess communication
  48.  
  49.     perldebug        Perl debugging
  50.     perldiag        Perl diagnostic messages
  51.     perlsec        Perl security
  52.     perltrap        Perl traps for the unwary
  53.     perlport        Perl portability guide
  54.     perlstyle        Perl style guide
  55.  
  56.     perlpod        Perl plain old documentation
  57.     perlbook        Perl book information
  58.  
  59.     perlembed        Perl ways to embed perl in your C or C++ application
  60.     perlapio        Perl internal IO abstraction interface
  61.     perlxs        Perl XS application programming interface
  62.     perlxstut        Perl XS tutorial
  63.     perlguts        Perl internal functions for those doing extensions
  64.     perlcall        Perl calling conventions from C
  65.  
  66.     perlhist        Perl history records
  67.  
  68. (If you're intending to read these straight through for the first time,
  69. the suggested order will tend to reduce the number of forward references.)
  70.  
  71. By default, all of the above manpages are installed in the 
  72. F</usr/local/man/> directory.  
  73.  
  74. Extensive additional documentation for Perl modules is available.  The
  75. default configuration for perl will place this additional documentation
  76. in the F</usr/local/lib/perl5/man> directory (or else in the F<man>
  77. subdirectory of the Perl library directory).  Some of this additional
  78. documentation is distributed standard with Perl, but you'll also find
  79. documentation for third-party modules there.
  80.  
  81. You should be able to view Perl's documentation with your man(1)
  82. program by including the proper directories in the appropriate start-up
  83. files, or in the MANPATH environment variable.  To find out where the
  84. configuration has installed the manpages, type:
  85.  
  86.     perl -V:man.dir
  87.  
  88. If the directories have a common stem, such as F</usr/local/man/man1>
  89. and F</usr/local/man/man3>, you need only to add that stem
  90. (F</usr/local/man>) to your man(1) configuration files or your MANPATH
  91. environment variable.  If they do not share a stem, you'll have to add
  92. both stems.
  93.  
  94. If that doesn't work for some reason, you can still use the
  95. supplied F<perldoc> script to view module information.  You might
  96. also look into getting a replacement man program.
  97.  
  98. If something strange has gone wrong with your program and you're not
  99. sure where you should look for help, try the B<-w> switch first.  It
  100. will often point out exactly where the trouble is.
  101.  
  102. =head1 DESCRIPTION
  103.  
  104. Perl is a language optimized for scanning arbitrary
  105. text files, extracting information from those text files, and printing
  106. reports based on that information.  It's also a good language for many
  107. system management tasks.  The language is intended to be practical
  108. (easy to use, efficient, complete) rather than beautiful (tiny,
  109. elegant, minimal).
  110.  
  111. Perl combines (in the author's opinion, anyway) some of the best
  112. features of C, B<sed>, B<awk>, and B<sh>, so people familiar with
  113. those languages should have little difficulty with it.  (Language
  114. historians will also note some vestiges of B<csh>, Pascal, and even
  115. BASIC-PLUS.)  Expression syntax corresponds quite closely to C
  116. expression syntax.  Unlike most Unix utilities, Perl does not
  117. arbitrarily limit the size of your data--if you've got the memory,
  118. Perl can slurp in your whole file as a single string.  Recursion is of
  119. unlimited depth.  And the tables used by hashes (previously called
  120. "associative arrays") grow as necessary to prevent degraded
  121. performance.  Perl uses sophisticated pattern matching techniques to
  122. scan large amounts of data very quickly.  Although optimized for
  123. scanning text, Perl can also deal with binary data, and can make dbm
  124. files look like hashes.  Setuid Perl scripts are safer than C programs
  125. through a dataflow tracing mechanism which prevents many stupid
  126. security holes.
  127.  
  128. If you have a problem that would ordinarily use B<sed> or B<awk> or
  129. B<sh>, but it exceeds their capabilities or must run a little faster,
  130. and you don't want to write the silly thing in C, then Perl may be for
  131. you.  There are also translators to turn your B<sed> and B<awk>
  132. scripts into Perl scripts.
  133.  
  134. But wait, there's more...
  135.  
  136. Perl version 5 is nearly a complete rewrite, and provides
  137. the following additional benefits:
  138.  
  139. =over 5
  140.  
  141. =item * Many usability enhancements
  142.  
  143. It is now possible to write much more readable Perl code (even within
  144. regular expressions).  Formerly cryptic variable names can be replaced
  145. by mnemonic identifiers.  Error messages are more informative, and the
  146. optional warnings will catch many of the mistakes a novice might make.
  147. This cannot be stressed enough.  Whenever you get mysterious behavior,
  148. try the B<-w> switch!!!  Whenever you don't get mysterious behavior,
  149. try using B<-w> anyway.
  150.  
  151. =item * Simplified grammar
  152.  
  153. The new yacc grammar is one half the size of the old one.  Many of the
  154. arbitrary grammar rules have been regularized.  The number of reserved
  155. words has been cut by 2/3.  Despite this, nearly all old Perl scripts
  156. will continue to work unchanged.
  157.  
  158. =item * Lexical scoping
  159.  
  160. Perl variables may now be declared within a lexical scope, like "auto"
  161. variables in C.  Not only is this more efficient, but it contributes
  162. to better privacy for "programming in the large".  Anonymous
  163. subroutines exhibit deep binding of lexical variables (closures).
  164.  
  165. =item * Arbitrarily nested data structures
  166.  
  167. Any scalar value, including any array element, may now contain a
  168. reference to any other variable or subroutine.  You can easily create
  169. anonymous variables and subroutines.  Perl manages your reference
  170. counts for you.
  171.  
  172. =item * Modularity and reusability
  173.  
  174. The Perl library is now defined in terms of modules which can be easily
  175. shared among various packages.  A package may choose to import all or a
  176. portion of a module's published interface.  Pragmas (that is, compiler
  177. directives) are defined and used by the same mechanism.
  178.  
  179. =item * Object-oriented programming
  180.  
  181. A package can function as a class.  Dynamic multiple inheritance and
  182. virtual methods are supported in a straightforward manner and with very
  183. little new syntax.  Filehandles may now be treated as objects.
  184.  
  185. =item * Embeddable and Extensible
  186.  
  187. Perl may now be embedded easily in your C or C++ application, and can
  188. either call or be called by your routines through a documented
  189. interface.  The XS preprocessor is provided to make it easy to glue
  190. your C or C++ routines into Perl.  Dynamic loading of modules is
  191. supported, and Perl itself can be made into a dynamic library.
  192.  
  193. =item * POSIX compliant
  194.  
  195. A major new module is the POSIX module, which provides access to all
  196. available POSIX routines and definitions, via object classes where
  197. appropriate.
  198.  
  199. =item * Package constructors and destructors
  200.  
  201. The new BEGIN and END blocks provide means to capture control as
  202. a package is being compiled, and after the program exits.  As a
  203. degenerate case they work just like awk's BEGIN and END when you
  204. use the B<-p> or B<-n> switches.
  205.  
  206. =item * Multiple simultaneous DBM implementations
  207.  
  208. A Perl program may now access DBM, NDBM, SDBM, GDBM, and Berkeley DB
  209. files from the same script simultaneously.  In fact, the old dbmopen
  210. interface has been generalized to allow any variable to be tied
  211. to an object class which defines its access methods.
  212.  
  213. =item * Subroutine definitions may now be autoloaded
  214.  
  215. In fact, the AUTOLOAD mechanism also allows you to define any arbitrary
  216. semantics for undefined subroutine calls.  It's not for just autoloading.
  217.  
  218. =item * Regular expression enhancements
  219.  
  220. You can now specify nongreedy quantifiers.  You can now do grouping
  221. without creating a backreference.  You can now write regular expressions
  222. with embedded whitespace and comments for readability.  A consistent
  223. extensibility mechanism has been added that is upwardly compatible with
  224. all old regular expressions.
  225.  
  226. =item * Innumerable Unbundled Modules
  227.  
  228. The Comprehensive Perl Archive Network described in L<perlmodlib>
  229. contains hundreds of plug-and-play modules full of reusable code.
  230. See F<http://www.perl.com/CPAN> for a site near you.
  231.  
  232. =item * Compilability
  233.  
  234. While not yet in full production mode, a working perl-to-C compiler
  235. does exist.  It can generate portable byte code, simple C, or
  236. optimized C code.
  237.  
  238. =back
  239.  
  240. Okay, that's I<definitely> enough hype.
  241.  
  242. =head1 ENVIRONMENT
  243.  
  244. See L<perlrun>.
  245.  
  246. =head1 AUTHOR
  247.  
  248. Larry Wall <F<larry@wall.org>>, with the help of oodles of other folks.
  249.  
  250. If your Perl success stories and testimonials may be of help to others 
  251. who wish to advocate the use of Perl in their applications, 
  252. or if you wish to simply express your gratitude to Larry and the 
  253. Perl developers, please write to <F<perl-thanks@perl.org>>.
  254.  
  255. =head1 FILES
  256.  
  257.  "/tmp/perl-e$$"    temporary file for -e commands
  258.  "@INC"            locations of perl libraries
  259.  
  260. =head1 SEE ALSO
  261.  
  262.  a2p    awk to perl translator
  263.  
  264.  s2p    sed to perl translator
  265.  
  266. =head1 DIAGNOSTICS
  267.  
  268. The B<-w> switch produces some lovely diagnostics.
  269.  
  270. See L<perldiag> for explanations of all Perl's diagnostics.  The C<use
  271. diagnostics> pragma automatically turns Perl's normally terse warnings
  272. and errors into these longer forms.
  273.  
  274. Compilation errors will tell you the line number of the error, with an
  275. indication of the next token or token type that was to be examined.
  276. (In the case of a script passed to Perl via B<-e> switches, each
  277. B<-e> is counted as one line.)
  278.  
  279. Setuid scripts have additional constraints that can produce error
  280. messages such as "Insecure dependency".  See L<perlsec>.
  281.  
  282. Did we mention that you should definitely consider using the B<-w>
  283. switch?
  284.  
  285. =head1 BUGS
  286.  
  287. The B<-w> switch is not mandatory.
  288.  
  289. Perl is at the mercy of your machine's definitions of various
  290. operations such as type casting, atof(), and floating-point
  291. output with sprintf().
  292.  
  293. If your stdio requires a seek or eof between reads and writes on a
  294. particular stream, so does Perl.  (This doesn't apply to sysread()
  295. and syswrite().)
  296.  
  297. While none of the built-in data types have any arbitrary size limits
  298. (apart from memory size), there are still a few arbitrary limits:  a
  299. given variable name may not be longer than 255 characters, and no
  300. component of your PATH may be longer than 255 if you use B<-S>.  A regular
  301. expression may not compile to more than 32767 bytes internally.
  302.  
  303. You may mail your bug reports (be sure to include full configuration
  304. information as output by the myconfig program in the perl source tree,
  305. or by C<perl -V>) to <F<perlbug@perl.com>>.
  306. If you've succeeded in compiling perl, the perlbug script in the utils/
  307. subdirectory can be used to help mail in a bug report.
  308.  
  309. Perl actually stands for Pathologically Eclectic Rubbish Lister, but
  310. don't tell anyone I said that.
  311.  
  312. =head1 NOTES
  313.  
  314. The Perl motto is "There's more than one way to do it."  Divining
  315. how many more is left as an exercise to the reader.
  316.  
  317. The three principal virtues of a programmer are Laziness,
  318. Impatience, and Hubris.  See the Camel Book for why.
  319.  
  320.